package IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest {
    public static void main() {
       FileInputStream file =null;
        //创建文件输入流对象
        //文件路径你D:\办公\ZuoYeWork\src（IDEA自动把”\“变成“\\”）携写成”/“也可以
        try {
            //IDEA默认的当前路径时工程Project的根目录
            file =new FileInputStream("D:\\BanGong\\TestFile\\temp.txt");
            //查看还剩下几个字节未读
            int read = file.read();//先读一个字节
            //该方法可以直接用获取的字节数量来定义数组长度，然后一次性全部读取
            //例如：byte[] bytes=new byte[file.available()];
            System.out.println(file.available());//调用方法，查看还剩下几个字节未读，将结果打印输出
            /*while循环方式读取每次读一个
                while (true){//循环提取指定文档内的每个字节
                int readDate =file.read();
                System.out.println(readDate);
                if (readDate == -1) {//指针等于-1，表示没有数据，
                    break;
                }
            }*/
            //创建byte数组，采取byte数组，一次读取多个字节，最多读取  ”数组.longth“个
            byte[] bytes =new byte[4];//一次读取4个字节
            while(true){
                System.out.println("总数量："+file.available());
                int bytesNum =file.read(bytes);
                if (bytesNum == -1) {
                    break;
                }
                System.out.println("读取到"+bytesNum+"个字节"+new String(bytes,0,bytesNum)+"。剩余字节数："+file.available());
            }
            /*代码内容拆分
            读取字节，存入数组bytes中。将本次读取到字节的数量存入byteNum中
            int bytesNum =file.read(bytes);
            将数组内的数字转换成字符串形式,每次转换规定转换长度：从下标0开始至每次read()到字节的数量
            String readFile =new String(bytes,0,bytesNum);//转换内容：bytes数组，起始：下标为0。终止：下标为bytes2
            打印输出结果：读到的字节4个：abcd
            System.out.println("读到"+bytesNum+"个字节："+readFile);
            将数据整合简写
            int byteNum2 =file.read(bytes);//读取字节，存入数组bytes中。将本次读取的字节个数存入byteNum2中
            System.out.println("读到"+byteNum2+"个字节："+new String(bytes,0,byteNum2));*/
            //
        } catch (IOException e) {//捕捉异常处理
            e.printStackTrace();
        }finally{
            if (file != null) {
                try {
                    file.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
